<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 1.函数声明
        function f1(){
            console.log("f1");
        }
        //2.函数表达式
        let f2=function(){
            console.log("f2");
        };

        // 3.ES6中新增的函数定义的方式
        // 箭头函数：使用关键字=>进行定义，本身是一个匿名函数
        // 箭头函数只能使用表达式方式进行定义

        let f3= () => {
            console.log("f3");
        };
        f3();
        // 1.函数简化
        function f4(x){
            console.log(x);
        }
        // a.如果函数在定义的时候只有一个参数时，可以直接使用箭头函数的形参，括号可以省略
        let f5 = x => {
            console.log(x);
        };
        f5("嘿嘿");
        // b.如果函数在定义的时候，有且只有一行返回值代码，可以省略箭头函数函数体的{}和return
        function f6(){
            return "我是f6";
        }
        let f7 = () => {
            return "我是f7";
        };
        console.log(f7());

        let f8 = () => "我是f8";
        console.log(f8());

        //void 描述该函数没有返回值
        function f9(){
            console.log("我是函数f9");
        }
        // let show = () => void console.log("我是show函数");//标准语法
        let show = () => console.log("我是show函数");//非标准语法
        console.log(show());

        // c.函数定义时，有且只有一个形参和一行代码，可以省略{}和()
        let show2 = a => console.log(a);
        show2("我是aaa");

        // d.如果箭头函数有且只有一行代码，且需要返回一个对象数据
        //此时{}会认为是函数体的范围，报语法错误
        //使用()将{}括起来，此时{}被认为是对象
        let show3 = () => ({name:"tom",age:29});
        console.log(show3());

        // e.如果箭头函数中有多行数据
        let show4 = (a,b) => {
            var sum=a+b;
            return a+b;
        };
        console.log(show4(100,20));
        // 简化回调函数的定义
        var arrs=[8,23,19,2,78,9,12];
        // arrs.sort();
        // arrs.sort(function(a,b){
        //     return a-b;
        // });
        arrs.sort((a,b) => a-b);
        console.log(arrs);

        arrs.forEach(function(item,index){
            console.log(item);//元素的值
        });
        arrs.forEach((item,index) => void console.log(item));

        let show4= () => {
             return {username:"tom",age:20};
        };
        let show5 = () => ({username:"tom",age:20});
    </script>
</head>
<body>
    
</body>
</html>